/*************************************************************************
    > File Name: 9.c
    > Author: Ykk
    > Mail: 3393579535@qq.com 
    > Created Time: 2023年04月24日 星期一 20时56分21秒
 ************************************************************************/

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<signal.h>
#include<unistd.h>
//信号处理函数
void func1(int signum)
{
	printf("捕捉到信号: %d \n",signum);
}

//信号处理函数2
void func2(int signum)
{
	printf("捕捉到信号: %d \n",signum);
}

//信号注册函数
int main()
{
	int ret = -1;
	//信号集
	sigset_t set;
	sigset_t oldset;

	//信号注册
	
	// ctrl + c
	signal(SIGINT,func1);

	// ctrl + \
	
	signal(SIGQUIT,func2);

	printf("按下任意键 阻塞信号2\n");
	getchar();
	
	sigemptyset(&oldset);
	sigemptyset(&set);
	sigaddset(&set,SIGINT);

	//设置屏蔽编号2的信号
	ret = sigprocmask(SIG_BLOCK,&set,&oldset);
	if(-1 == ret)
	{
		perror("sigprocmask");
		return 1;
	}
	printf("设置屏蔽编号为2的信号成功...\n");

	printf("按下任意键接除编号为2的信号的的阻塞...\n");
	getchar();

	//将信号屏蔽集设置为原来的集合
	ret = sigprocmask(SIG_SETMASK,&oldset,NULL);
	if(-1 == ret)
	{
		perror("sigprocmask");
		return 1;
	}

	
	while(1)
	{
		sleep(1);
	}

	return 0;
}
